//
//  MLSUserInfo.swift
//  MLSMircoBlog
//
//  Created by 袁航 on 15/7/30.
//  Copyright © 2015年 yuanhang. All rights reserved.
//

//MARK:- 废弃待用

import UIKit

class MLSUserInfo: NSObject {
    /// 用户昵称
    var screen_name: String?
    /// 字符串型的用户UID
    var idstr: String?
    /// 友好显示名称
    var name: String?
    /// 用户所在省级ID
    var province: Int = 0
    /// 用户所在城市ID
    var city: Int = 0
    /// 用户所在地
    var location: String?
    /// 用户个人描述
    // 与description方法冲突(需要重新赋值)
    var descriptions: String?
    /// 用户博客地址
    var url: String?
    /// 用户头像地址（中图），50×50像素
    var profile_image_url: String? {
        didSet {
            profileImageUrl = NSURL(string: profile_image_url!)
        }
    }
    /// 头像url
    var profileImageUrl: NSURL?
    
    /// 用户的微博统一URL地址
    var profile_url: String?
    /// 用户的个性化域名
    var domain: String?
    /// 用户的微号
    var weihao: String?
    /// 性别，m：男、f：女、n：未知
    var gender: String?
    /// 粉丝数
    var followers_count: Int = 0
    /// 关注数
    var friends_count: Int = 0
    /// 微博数
    var statuses_count: Int = 0
    /// 收藏数
    var favourites_count: Int = 0
    /// 用户创建（注册）时间
    var created_at: String?
    /// boolean	是否允许所有人给我发私信，true：是，false：否
    var allow_all_act_msg: Bool = false
    /// 是否允许标识用户的地理位置，true：是，false：否
    var geo_enabled: Bool = false
    /// 是否是微博认证用户，即加V用户，true：是，false：否
    var verified: Bool = false
    /// 认证类型 -1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    var verified_type: Int = -1
    var vipImage: UIImage? {
        switch verified_type {
        case 0: return UIImage(named: "avatar_grassroot")
        case 1...7: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_vip")
        default: return nil
        }
    }
    /// 会员等级 1~6
    var mbrank: Int = -1
    /// 会员图像
    var memberImage: UIImage? {
        if mbrank > 0 && mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(mbrank)")
        } else {
            return nil
        }
    }
    /// 用户备注信息，只有在查询用户关系时才返回此字段
    var remark: String?
    /// 用户的最近一条微博信息字段 详细
    var status: AnyObject?
    /// 是否允许所有人对我的微博进行评论，true：是，false：否
    var allow_all_comment: Bool = false
    /// 用户头像地址（大图），180×180像素
    var avatar_large: String?
    /// 用户头像地址（高清），高清头像原图
    var avatar_hd: String?
    /// 认证原因
    var verified_reason: String?
    /// 该用户是否关注当前登录用户，true：是，false：否
    var follow_me: Bool = false
    /// 用户的在线状态，0：不在线、1：在线
    var online_status: Int = 0
    /// 用户的互粉数
    var bi_followers_count: Int = 0
    /// 用户当前的语言版本，zh-cn：简体中文，zh-tw：繁体中文，en：英语
    var lang: String?
    
    ///  字典转模型
    init(dict: [String: AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
    }
    
    ///  字典转模型有key不对
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        // 用户个人描述(需要重新赋值)与description方法冲突
        if key.compare("description") == NSComparisonResult.OrderedSame {
            setValue(value, forKey: "descriptions")
        }
    }
    
    ///  重写description方法,方便调试
    override var description: String {
       
        // 返回描述
        let properties = getProperties()
        return "\(dictionaryWithValuesForKeys(properties))"
    }
    
    // 获取属性数组
    func getProperties() -> [String] {
        var count: UInt32 = 0
        // 头文件中找类型
        var pointer: UnsafeMutablePointer<objc_property_t> = class_copyPropertyList(MLSUserInfo.self, &count)
        var properties: [String] = [String]()
        for i in 0..<(count - 1) {
            // 获取属性名称C语言字符串
            let name: UnsafePointer<Int8> =  property_getName(pointer[Int(i)])
            // 获取属性swift中字符串
            let propertyName = String(CString: name, encoding: NSUTF8StringEncoding)
            properties.append(propertyName!)
        }
        return properties
    }
}
